//Tue Apr 20 05:42:56 CDT 2010
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

class T9
{
public:
	string message(vector <string> part, vector <string> dict, vector <string> keystr)
	{
		int N = dict.size();
		map<char, int> key;
		for(int i=0; i<(int)part.size(); i++)
		{
			for(int j=0; j<part[i].size(); j++)
			{
				key[part[i][j]] = i+1;
			}
		}
		vector<pair<int, string> > v(N);
		for(int i=0; i<N; i++)
		{
			int number = 0;
			for(int j=0; j<dict[i].size(); j++)
			{
				number = number * 10 + key[dict[i][j]];
			}
			v[i].first = number;
			v[i].second = dict[i];
		}
		sort(v.begin(), v.end());
//		map<pair<int, int>, string > dic;
//		for(int i=0; i<v.size(); i++)
//		{
//
//		}
		string ret = "";
		for(int i=0; i<keystr.size(); i++)
		{
			for(int j=0; j<keystr[i].size(); j++)
			{

			}
		}
	}
};
